import Vue from 'vue'

import VueRouter from 'vue-router'
// 404页面
import NotFount from '@/components/404'
// 登录
import Login from '@/views/login';
// 用户管理
import user from '@/views/user';
// 部门管理
import dept from '@/views/dept';
// 菜单管理
import Menu from '@/views/menu';
// 主题一
import Theme from '@/components/theme'
// 首页
import Home from '@/views/index'

import Main from '@/views/main'

import Scm from '@/views/scm'

import druid from '@/views/druid'

import Echart from '@/views/echart'

import Activiti from '@/views/activiti'



Vue.use(VueRouter)

const router = new VueRouter({
    routes: [{
            path: '/',
            name: '首页',
            component: Home,
            meta: {
                requireAuth: true, // 添加该字段，表示进入这个路由是需要登录的
            }
        },
        {
            path: '/login',
            component: Login,
            name: 'login',
            hidden: true,
            meta: {
                requireAuth: false
            }

        },
        {
            path: '/404',
            name: '找不到页面',
            hidden: true, //判断hidden的布尔值来绝对加载不加载
            component: NotFount,
            meta: {
                requireAuth: false
            }

        },
        {
            path: '/home',
            component: Home,
            name: 'home',
            iconCls: 'el-icon-message', //图标样式class
            children: [{
                    path: '/main',
                    component: Main,
                    name: '主页面',
                    meta: {
                        requireAuth: true
                    }
                },
                {
                    path: '/activiti',
                    component: Activiti,
                    name: '工作流',
                    meta: {
                        requireAuth: true
                    }
                },
                {
                    path: '/menu',
                    component: Menu,
                    name: '菜单',
                    meta: {
                        requireAuth: true
                    }
                },
                {
                    path: '/user',
                    component: user,
                    name: '用户管理',
                    meta: {
                        requireAuth: true
                    }
                },
                {
                    path: '/dept',
                    component: dept,
                    name: '部门管理',
                    meta: {
                        requireAuth: true
                    }
                },
                {
                    path: '/scm',
                    component: Scm,
                    name: 'Scm管理',
                    meta: {
                        requireAuth: true
                    }
                },
                {
                    path: '/druid',
                    component: druid,
                    name: 'druid管理',
                    meta: {
                        requireAuth: true
                    }
                },
                {
                    path: '/echart',
                    component: Echart,
                    name: '部门管理',
                    meta: {
                        requireAuth: true
                    }
                },
            ]
        },
        {
            path: '*', // 错误路由
            hidden: true, //判断hidden的布尔值来绝对加载不加载
            redirect: { path: '/404' } //重定向
        }

    ]
})

// 路由拦截器
router.beforeEach((to, from, next) => {
    //如果未匹配到路由    if (to.matched.length ===0) {   
    if (to.matched.length != 0) { //解决vue2.0路由跳转未匹配相应用路由避免出现空白页面
        if (to.meta.requireAuth) { // 判断该路由是否需要登录权限
            if (Boolean(localStorage.getItem("userInfo"))) { // 通过vuex state获取当前的user是否存在
                next(); //进行管道中的下一个钩子。如果全部钩子执行完了，则导航的状态就是 confirmed （确认的）
            } else {
                next({ // next('/') 或者 next({ path: '/' }): 跳转到一个不同的地址。当前的导航被中断，然后进行一个新的导航。
                    path: '/login',
                    query: { redirect: to.fullPath } // 将跳转的路由path作为参数，登录成功后跳转到该路由
                })
            }
        } else {
            if (Boolean(localStorage.getItem("userInfo"))) { // 判断是否登录
                if (to.path != "/" && to.path != "/login") { //判断是否要跳到登录界面
                    next();
                } else {
                    /**
                     * 防刷新，如果登录，修改路由跳转到登录页面，修改路由为登录后的首页 
                     */
                    next({
                        path: '/home'
                    })
                }
            } else {
                next();
            }
        }
    } else {
        next({
            path: '/login',
            query: { redirect: to.fullPath } //没有登录,重定向到登录页面   
        })
    }
})

export default router